Repetitive control, also known as iterative learning control, is a very effective control strategy in the numerous control applications where input reference signals or disturbances are periodic and their periods are known, for instance in control systems that suffer from periodic disturbances (e.g. optical or magnetic disc drives, or steel milling machines) or have to perform the same task repeatedly (robots, pick and place machines, . . . ). Such a strategy is illustrated in many documents and for example in “Repetitive control for systems with uncertain period-time”, by M. Steinbuch, Automatica, In Press, Sep. 4, 2002, pp 1-7. The simplest implementation of a repetitive controller, illustrated in FIG. 1, basically comprises a FIFO (First-In-First-Out) memory buffer with N taps (i.e. N memory elements) captured inside a positive feedback loop where N times the sampling time TS is equal to the fundamental period of the periodic disturbance (in practice, a repetitive controller also contains a filter for stabilization, but it is not relevant for the invention that will be described).
Such a buffer inside a loop, also called memory loop, can be considered as an autonomous periodic signal generator. A drawback of using a memory loop as a signal generator is that, in some cases, it requires a large amount of memory. Depending on the sampling time TS and the signal period T, the number N of memory places can become large. Two types of solutions have then been proposed for replacing the memory loop with N memory elements by a periodic signal generator that requires less memory. The first one consists in applying a downsampling, i.e. using a larger sampling time, thereby reducing the number of required memory elements, but the main drawback of such a solution is that the control bandwidth is reduced. The second solution consists in applying a series or parallel connection of as many sinusoidal signal generators as necessary to deal with all the harmonic components present in the periodic signal, only two states or memory elements being required for each generator. The drawback of this approach is that the complexity of implementation is large when compared to the classical memory loop.